package br.edu.infnet.avaliacao.model;

import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@Table(name = "agendamento", catalog = "avaliacao")
public class Agendamento implements java.io.Serializable {

	private static final long serialVersionUID = 3804322908574637197L;
	private int id;
	private Questionario questionario;
	private Curso curso;
	private Date dataAbertura;
	private Date dataFechamento;
	private String textoConvidativo;

	public Agendamento() {
	}

	public Agendamento(int id, Questionario questionario, Curso curso,
			String textoConvidativo) {
		this.id = id;
		this.questionario = questionario;
		this.curso = curso;
		this.textoConvidativo = textoConvidativo;
	}

	public Agendamento(int id, Questionario questionario, Curso curso,
			Date dataAbertura, Date dataFechamento, String textoConvidativo) {
		this.id = id;
		this.questionario = questionario;
		this.curso = curso;
		this.dataAbertura = dataAbertura;
		this.dataFechamento = dataFechamento;
		this.textoConvidativo = textoConvidativo;
	}

	@Id
	@Column(name = "id", nullable = false)
	public int getId() {
		return this.id;
	}

	public void setId(int id) {
		this.id = id;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "questionario_id", nullable = false)
	public Questionario getQuestionario() {
		return this.questionario;
	}

	public void setQuestionario(Questionario questionario) {
		this.questionario = questionario;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "curso_id", nullable = false)
	public Curso getCurso() {
		return this.curso;
	}

	public void setCurso(Curso curso) {
		this.curso = curso;
	}

	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "data_abertura", length = 19)
	public Date getDataAbertura() {
		return this.dataAbertura;
	}

	public void setDataAbertura(Date dataAbertura) {
		this.dataAbertura = dataAbertura;
	}

	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "data_fechamento", length = 19)
	public Date getDataFechamento() {
		return this.dataFechamento;
	}

	public void setDataFechamento(Date dataFechamento) {
		this.dataFechamento = dataFechamento;
	}

	@Column(name = "texto_convidativo", nullable = false, length = 65535)
	public String getTextoConvidativo() {
		return this.textoConvidativo;
	}

	public void setTextoConvidativo(String textoConvidativo) {
		this.textoConvidativo = textoConvidativo;
	}

}
